﻿using System;
using System.Collections.Generic;
using System.Linq;
using SqlSugar;
namespace Zhao.Models.Entity
{
    /// <summary>
    /// 活动主表
    ///</summary>
    [SugarTable("Activities")]
    public class Activities
    {

        /// <summary>
        /// 备  注:
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "ActivityID", IsPrimaryKey = true, IsIdentity = true)]
        public int ActivityID { get; set; }

        /// <summary>
        /// 备  注:所属球馆（关联Venues）
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "VenueID")]
        public Guid VenueID { get; set; }

        /// <summary>
        /// 备  注:活动类型（外键关联FieldTypes）
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "TypeId")]
        public int TypeId { get; set; }

        /// <summary>
        /// 备  注:活动标题（如"周末羽毛球争霸赛"）
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Title")]
        public string Title { get; set; } = null!;

        /// <summary>
        /// 备  注:活动详情
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Description")]
        public string? Description { get; set; }

        /// <summary>
        /// 备  注:最大参与人数（NULL表示不限制）
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "MaxNumber")]
        public int? MaxNumber { get; set; }

        /// <summary>
        /// 备  注:活动开始时间（精确到分钟）
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "StartTime")]
        public TimeOnly StartTime { get; set; }

        /// <summary>
        /// 备  注:活动结束时间
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "EndTime")]
        public TimeOnly EndTime { get; set; }

        /// <summary>
        /// 备  注:状态：0-待发布，1-已上线，3-进行中，5-已结束，7-取消
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Status")]
        public short Status { get; set; }

        /// <summary>
        /// 备  注:软删除标记
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "IsDeleted")]
        public bool? IsDeleted { get; set; }

        /// <summary>
        /// 备  注:创建时间
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "CreatedAt")]
        public DateTime? CreatedAt { get; set; }

        /// <summary>
        /// 备  注:最后状态更新时间
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "UpdateAt")]
        public DateTime? UpdateAt { get; set; }
        /// <summary>
        /// 备  注:活动图片
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Image")]

        public string Image { get; set; }
        /// <summary>
        /// 备  注:活动价格
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Price")]

        public decimal Price { get; set; }
        /// <summary>
        /// 备  注:活动详情时间
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "DisplayDate")]

        public string DisplayDate { get; set; }
        /// <summary>
        /// 备  注:活动截至报名时间
        /// 默认值:
        ///</summary>
        [SugarColumn(ColumnName = "Deadline")]

        public short? Deadline { get; set; }
        /// <summary>
        /// 是否启用女士优惠：0= 否，1= 是
        /// </summary>
        [SugarColumn(ColumnName = "IsLadyDiscountEnabled")]
        public bool IsLadyDiscountEnabled { get; set; }
        /// <summary>
        /// 优惠类型：1= 固定价，3= 折扣，5= 减价
        /// </summary>
        [SugarColumn(ColumnName = "LadyDiscountType")]
        public short? LadyDiscountType { get; set; }
        /// <summary>
        /// 优惠类型：优惠值（如固定价30、折扣0.8、减价10）
        /// </summary>
        [SugarColumn(ColumnName = "LadyDiscountValue")]
        public decimal? LadyDiscountValue { get; set; }
        /// <summary>
        /// 定价类型 1固定价  3AA制  5免费 (后续可以继续添加)
        /// </summary>
        [SugarColumn(ColumnName = "PriceType")]
        public short PriceType { get; set; }
        public decimal? DepositAmount { get; set; }
        public bool IsSettled { get; set; }
        public DateTime? SettlementTime { get; set; }
        public string CancelReason { get; set; }
        public string? CostDescription { get; set; }
    }

}